// Package types define the structure of request parameters and return results in this package
package types

import (
	"time"

	"github.com/zhufuyi/sponge/pkg/mysql/query"
)

var _ time.Time

// CreateTkVisitLogRequest create params
// todo fill in the binding rules https://github.com/go-playground/validator
type CreateTkVisitLogRequest struct {
	IP          string `json:"ip" binding:""`          // ip
	Sign        string `json:"sign" binding:""`        // 加密串
	Url         string `json:"url" binding:""`         // 访问地址
	StytemType  string `json:"stytem_type" binding:""` // 系统类型
	Stytem      string `json:"stytem" binding:""`      // 系统
	Browser     string `json:"browser" binding:""`     // 浏览器类型
	Ua          string `json:"ua" binding:""`
	ClickID     string `json:"click_id" binding:""` // clickid
	DeviceInfo  string `json:"device_info" binding:""`
	Time        int    `json:"time" binding:""`
	ProductID   int    `json:"product_id" binding:""`    // 商品id
	SourceUrl   string `json:"source_url" binding:""`    // 来源地址
	JumpUrl     string `json:"jump_url" binding:""`      // 跳转链接
	VisitUrl    string `json:"visit_url" binding:""`     // 访问URL
	City        string `json:"city" binding:""`          // 城市
	DomainName  string `json:"domain_name" binding:""`   // 域名地址
	AdID        int    `json:"ad_id" binding:""`         // 广告id
	AdAccountID int    `json:"ad_account_id" binding:""` // 广告id
	BPageType   int    `json:"b_page_type" binding:""`   // 1B页面  2A页面
}

// UpdateTkVisitLogByIDRequest update params
type UpdateTkVisitLogByIDRequest struct {
	ID uint64 `json:"id" binding:""` // uint64 id

	IP          string `json:"ip" binding:""`          // ip
	Sign        string `json:"sign" binding:""`        // 加密串
	Url         string `json:"url" binding:""`         // 访问地址
	StytemType  string `json:"stytem_type" binding:""` // 系统类型
	Stytem      string `json:"stytem" binding:""`      // 系统
	Browser     string `json:"browser" binding:""`     // 浏览器类型
	Ua          string `json:"ua" binding:""`
	ClickID     string `json:"click_id" binding:""` // clickid
	DeviceInfo  string `json:"device_info" binding:""`
	Time        int    `json:"time" binding:""`
	ProductID   int    `json:"product_id" binding:""`    // 商品id
	SourceUrl   string `json:"source_url" binding:""`    // 来源地址
	JumpUrl     string `json:"jump_url" binding:""`      // 跳转链接
	VisitUrl    string `json:"visit_url" binding:""`     // 访问URL
	City        string `json:"city" binding:""`          // 城市
	DomainName  string `json:"domain_name" binding:""`   // 域名地址
	AdID        int    `json:"ad_id" binding:""`         // 广告id
	AdAccountID int    `json:"ad_account_id" binding:""` // 广告id
	BPageType   int    `json:"b_page_type" binding:""`   // 1B页面  2A页面
}

// GetTkVisitLogByIDRespond respond detail
type GetTkVisitLogByIDRespond struct {
	ID string `json:"id"` // convert to string id

	IP          string `json:"ip"`          // ip
	Sign        string `json:"sign"`        // 加密串
	Url         string `json:"url"`         // 访问地址
	StytemType  string `json:"stytem_type"` // 系统类型
	Stytem      string `json:"stytem"`      // 系统
	Browser     string `json:"browser"`     // 浏览器类型
	Ua          string `json:"ua"`
	ClickID     string `json:"click_id"` // clickid
	DeviceInfo  string `json:"device_info"`
	Time        int    `json:"time"`
	ProductID   int    `json:"product_id"`    // 商品id
	SourceUrl   string `json:"source_url"`    // 来源地址
	JumpUrl     string `json:"jump_url"`      // 跳转链接
	VisitUrl    string `json:"visit_url"`     // 访问URL
	City        string `json:"city"`          // 城市
	DomainName  string `json:"domain_name"`   // 域名地址
	AdID        int    `json:"ad_id"`         // 广告id
	AdAccountID int    `json:"ad_account_id"` // 广告id
	BPageType   int    `json:"b_page_type"`   // 1B页面  2A页面
	CreatedAt   int    `json:"created_at"`
	UpdatedAt   int    `json:"updated_at"`
}

// DeleteTkVisitLogsByIDsRequest request form ids
type DeleteTkVisitLogsByIDsRequest struct {
	IDs []uint64 `json:"ids" binding:"min=1"` // id list
}

// GetTkVisitLogsByIDsRequest request form ids
type GetTkVisitLogsByIDsRequest struct {
	IDs []uint64 `json:"ids" binding:"min=1"` // id list
}

// GetTkVisitLogsRequest request form params
type GetTkVisitLogsRequest struct {
	query.Params // query parameters
}

// ListTkVisitLogsRespond list data
type ListTkVisitLogsRespond []struct {
	GetTkVisitLogByIDRespond
}
